The present invention is in the field of systems, methods, and computer program products for effective memory clustering to minimize page faults and optimize memory utilization. The present invention is applicable in the field of distributed storage as well as storage associated with cloud computing.
When a request for data is received by the CPU, all of the pages available in the cache are searched. If the requested data is not available, the next lower level of the memory hierarchy is searched until the page containing the data is located. The page containing the requested data is then fetched and stored at each hierarchy level up to the cache. If the cache or any memory level in the hierarchy is full, the recently obtained page replaces an existing page. The CPU then accesses the data from the cache.
In many applications involving multidimensional data, the memory associativity includes more than row and column associativity. Examples of such applications include large data mining applications in multidimensional data space. Applications running on a multi-threaded, multi-process, and/or multi-core system may also have memory associativity in addition to row and column associativity. Data paging involving only row or column association may pull in only a small subset of data up and down the memory hierarchy. This may lead numerous page faults and slower computer processing.